# _*_ coding: UTF-8 _*_
# @Time     : 2021/1/26 上午 10:18
# @Author   : Li Jie
# @Site     : http://www.hzdledu.com/
# @File     : standard_module_test.py
# @Software : PyCharm

import time


def foo1():
    # 获取当前时间，以秒记
    # 返回以浮点数表示的从 epoch 开始的秒数的时间值
    # time.time() → float
    time1 = time.time()
    print(time1)

    # 转换以距离初始纪元的秒数表示的时间为以下形式的字符串: 'Sun Jun 20 23:21:05 1993' 代表本地时间
    # 如果 secs 未提供或为 None，则使用 time() 所返回的当前时间
    # time.ctime([secs])
    ctime = time.ctime()
    print(ctime)

    # 将以自 epoch 开始的秒数表示的时间转换为 UTC 的 struct_time
    # 如果未提供 secs 或为 None ，则使用 time() 所返回的当前时间
    # time.gmtime([secs])
    gtime = time.gmtime()
    print(gtime)

    # 与 gmtime() 相似但转换为当地时间。
    # 如果未提供 secs 或为 None ，则使用由 time() 返回的当前时间
    # time.localtime([secs])
    ltime = time.localtime()
    print(ltime)

    # 将gmtime() 或 localtime() 返回的 struct_time 时间转换为由 format 参数指定的字符串。
    # 如果未提供 t ，则使用由 localtime() 返回的当前时间
    # time.strftime(format[, t])
    strftime = time.strftime('%Y-%m-%d:%H-%M-%S')
    print(strftime)

    # 调用该方法的线程将被暂停执行 secs 秒
    # time.sleep(secs)
    time.sleep(3)


import random


def foo2():
    # random.random()
    # 返回 [0.0, 1.0) 范围内的下一个随机浮点数
    rand0 = random.random()
    print(rand0)

    # random.randint(a, b)
    # 返回随机整数 N 满足 a <= N <= b。相当于 randrange(a, b+1)
    rand1 = random.randint(1, 10)
    print(rand1)

    # random.choice(seq)
    # 从非空序列 seq 返回一个随机元素。 如果 seq 为空，则引发 IndexError。
    rand2 = random.choice([1, 2, 3, 4, 5])
    print(rand2)

    # random.shuffle(x[, random])
    # 将序列 x 随机打乱位置。
    # 可选参数 random 是一个0参数函数，在 [0.0, 1.0) 中返回随机浮点数；默认情况下，这是函数 random()
    shuffle = [1, 2, 3, 4, 5]
    random.shuffle(shuffle)
    print(shuffle)


import math


def foo3():
    # math.ceil(x)
    # 返回 x 的上限，即大于或者等于 x 的最小整数
    print(math.ceil(3.1415))

    # math.floor(x)
    # 返回 x 的向下取整，小于或等于 x 的最大整数
    print(math.floor(3.141))

    # math.fabs(x)
    # 返回 x 的绝对值
    print(math.fabs(-3.141))

    # math.factorial(x)
    # 以一个整数返回 x 的阶乘。 如果 x 不是整数或为负数时则将引发 ValueError
    print(math.factorial(3))

    # 常数
    # math.pi
    # 数学常数 π = 3.141592...，精确到可用精度
    print(math.pi)


import sys


def foo4():
    # sys模块系统相关的参数和函数。

    # sys.argv
    # 返回一个列表，其中包含了被传递给 Python 脚本的命令行参数。 argv[0] 为脚本的名称（是否是完整的路径名取决于操作系统）
    print(sys.argv)

    # sys.path
    # 一个由字符串组成的列表，用于指定模块的搜索路径。初始化自环境变量 PYTHONPATH，再加上一条与安装有关的默认路径。
    print(sys.path)
    #可用于为当前运行的文件临时添加模块的搜索目录
    sys.path.append('c:\\')
    print(sys.path)

    # sys.getdefaultencoding()
    # 返回当前 Unicode 实现所使用的默认字符串编码名称
    print(sys.getdefaultencoding())

    # sys.getfilesystemencoding()
    # 返回编码名称，该编码用于在 Unicode 文件名和 bytes 文件名之间转换
    print(sys.getfilesystemencoding())


if __name__ == '__main__':
    # foo1()
    # foo2()
    # foo3()
    foo4()
